<?php
/**
 * @Author: wang
 * @Date:   2017-03-30 21:18:41
 * @Last Modified by:   wang
 * @Last Modified time: 2017-03-30 23:32:59
 */
namespace frontend\models;
use yii\db\ActiveRecord;
use Yii;
use yii\helpers\ArrayHelper;

class Category extends ActiveRecord{
	public static function tableName(){
		return "{{%shop_category}}";
	}

	public function attributeLabels(){
		return [
			'parentid' => '上级分类',
			'title' => '标题'
		];
		
	}
	public function rules(){
		return [
			['parentid','required', 'message'=>'上级分类不能为空'],
			['title','required','message'=>'标题不能为空'],
			['createtime','safe']
		];
	}


	public function add($data){
		$data['Category']['createtime'] = time();
		if($this->load($data) && $this->save()){
			return true;
		}
		return false;

	}

	public function getData(){
		$cates = self::find()->all();
		$cates = ArrayHelper::toArray($cates);
		return $cates;
	}

	public function getTree($cates, $pid=0){
		$tree = [];
		foreach($cates as $cate){
			if($cate['parentid'] == $pid){
				$tree[]=$cate;
				$tree = array_merge($tree,$this->getTree($cates,$cate['cateid']));
			}
		}
		return $tree;
	}

	public function setPrefix($data,$p="|----"){
		$tree = [];
		$num = 1;
		$prefix=[0=>1];
		while($val=current($data)){
			$key = key($data);
			if($key>0){
				if($data[$key-1]['parentid'] != $val['parentid']){
					$num++;
				}
			}
			if(array_key_exists($val['parentid'],$prefix)){
				$num = $prefix[$val['parentid']];
			}
			$val['title'] = str_repeat($p, $num).$val['title'];
			$prefix[$val['parentid']] = $num;
			$tree[]=$val;
			next($data);
		}
		return $tree;
	}

	public function getOption(){
		$cates = $this->getData();
		$tree = $this->getTree($cates);
		$tree = $this->setPrefix($tree);
		$options = ['添加顶级分类'];
		foreach($tree as $cate){
			$options[$cate['cateid']] = $cate['title'];
		}
		return $options;

	}

}